/**
 * @author 侯非
 * @date 2009年3月10日
 * @class PersonFileFormPanel
 * @extends Ext.form.FormPanel
 * @description 人员档案信息表单
 */
PersonFileFormPanel = Ext.extend(Ext.form.FormPanel, {
	myid : "myid",
	myReadOnly : false, // 自定义属性是否只读
	myDisabled : false, // 自定义属性是否禁用
	upLoadFileWin : null, // 照片上传窗体
	comboStoreZjxy : null, // 下拉列表框数据源(宗教信仰)
	comboStoreZhzhmm : null, // 下拉列表框数据源(政治面貌)
	comboStoreGj : null, // 下拉列表框数据源(国籍)
	comboStoreAh : null, // 下拉列表框数据源(爱好)
	comboStoreMz : null, // 下拉列表框数据源(民族)
	comboStoreXl : null, // 下拉列表框数据源(学历)
	comboStoreGs : null, // 下拉列表框数据源(公司名称)
	comboStoreBm : null, // 下拉列表框数据源(部门名称)
	comboStoreJob : null, // 下拉列表框数据源(职位名称)
	comboStoreMoneyStandard : null, // 下拉列表框数据源(薪酬标准)
	// 构造方法
	constructor : function(_config) {
		if (_config == null) {
			_config = {};
		}
		Ext.apply(this, _config);
		// 照片上传窗体	
		this.upLoadFileWin = new UpLoadFileWindow();
		// 下拉列表框数据源(宗教信仰)
		this.comboStoreZjxy = new Ext.data.JsonStore({
					url : "hrmConfig.do",
					baseParams : {
						"operator" : "showDDByItemName",
						"itemName" : "宗教信仰"
					},
					fields : ["cfgItem", "cfgValue"],
					autoLoad : true
				});
		// 下拉列表框数据源(政治面貌)
		this.comboStoreZhzhmm = new Ext.data.JsonStore({
					url : "hrmConfig.do",
					baseParams : {
						"operator" : "showDDByItemName",
						"itemName" : "政治面貌"
					},
					fields : ["cfgItem", "cfgValue"],
					autoLoad : true
				});
		// 下拉列表框数据源(国籍)
		this.comboStoreGj = new Ext.data.JsonStore({
					url : "hrmConfig.do",
					baseParams : {
						"operator" : "showDDByItemName",
						"itemName" : "国籍"
					},
					fields : ["cfgItem", "cfgValue"],
					autoLoad : true
				});
		// 下拉列表框数据源(爱好)
		this.comboStoreAh = new Ext.data.JsonStore({
					url : "hrmConfig.do",
					baseParams : {
						"operator" : "showDDByItemName",
						"itemName" : "爱好"
					},
					fields : ["cfgItem", "cfgValue"],
					autoLoad : true
				});
		// 下拉列表框数据源(民族)
		this.comboStoreMz = new Ext.data.JsonStore({
					url : "hrmConfig.do",
					baseParams : {
						"operator" : "showDDByItemName",
						"itemName" : "民族"
					},
					fields : ["cfgItem", "cfgValue"],
					autoLoad : true
				});
		// 下拉列表框数据源(学历)
		this.comboStoreXl = new Ext.data.JsonStore({
					url : "hrmConfig.do",
					baseParams : {
						"operator" : "showDDByItemName",
						"itemName" : "学历"
					},
					fields : ["cfgItem", "cfgValue"],
					autoLoad : true
				});
		// 下拉列表框数据源(公司名称)
		this.comboStoreGs = new Ext.data.JsonStore({
					url : "hrmConfig.do",
					baseParams : {
						"operator" : "showDDByItemName",
						"itemName" : "公司名称"
					},
					fields : ["cfgItem", "cfgValue"],
					autoLoad : true
				});
		// 下拉列表框数据源(部门名称)
		this.comboStoreBm = new Ext.data.JsonStore({
					url : "hrmConfig.do",
					baseParams : {
						"operator" : "showDDByItemName",
						"itemName" : "部门"
					},
					fields : ["cfgItem", "cfgValue"],
					autoLoad : true
				});
		// 下拉列表框数据源(职位名称)
		this.comboStoreJob = new Ext.data.JsonStore({
					url : "hrmConfig.do",
					baseParams : {
						"operator" : "showDDByItemName",
						"itemName" : "职位"
					},
					fields : ["cfgItem", "cfgValue"],
					autoLoad : true
				});
		// 下拉列表框数据源(薪酬标准)
		this.comboStoreMoneyStandard = new Ext.data.JsonStore({
					url : "moneyStandard.do?operator=showMoneyInfo", // 服务端地址
					baseParams : {
						condition : "通过审核"
					},
					autoLoad : true,
					// 数据解析
					fields : ["miId", "miStandardId", "miStandardName",
							"miCountMoney"]
				});

		// 拷贝父类的构造方法到当前对象
		PersonFileFormPanel.superclass.constructor.call(this, {
			id : this.myid,
			border : false, // 不要边框
			fileUpload : true, // 允许上传
			autoScroll : true,
			bodyStyle : "backgroundColor:#DFE8F6;",
			items : [{
				xtype : "panel",
				frame : true,
				border : false,
				bodyStyle : "backgroundColor:#DFE8F6;",
				items : [{
					layout : "column",
					border : false,
					items : [{
								columnWidth : .33,
								labelWidth : 55,
								layout : "form",
								defaults : {
									xtype : "textfield",
									allowBlank : false, // 不允许为空
									anchor : "90%"
								},
								items : [{
											fieldLabel : "姓名",
											name : "pf.pfName"
										}, {
											xtype : "combo", // 下拉列表框
											fieldLabel : "性别",
											hiddenName : "pf.pfSex",
											mode : "local", // 数据模式为本地
											triggerAction : "all", // 显示所有信息
											readOnly : true, // 只读
											emptyText : "请选择性别",
											displayField : "sex",
											store : new Ext.data.JsonStore({
														data : [{
																	"sex" : "男"
																}, {
																	"sex" : "女"
																}, {
																	"sex" : "其它"
																}],
														fields : ["sex"]
													})
										}, {
											fieldLabel : "职称",
											name : "pf.pfDesignation"
										}, {
											fieldLabel : "QQ号",
											name : "pf.pfQq"
										}, {
											xtype : "combo", // 下拉列表框
											fieldLabel : "宗教信仰",
											emptyText : "请选择宗教信仰",
											triggerAction : "all", // 显示所有数据
											hiddenName : "pf.pfReligion",
											displayField : "cfgValue", // 要显示的值
											store : this.comboStoreZjxy
										}, {
											xtype : "combo",
											fieldLabel : "民族",
											emptyText : "请选择民族", // 为空显示信息
											hiddenName : "pf.pfRace",
											triggerAction : "all", // 显示所有数据
											displayField : "cfgValue", // 要显示的值
											store : this.comboStoreMz
										}, {
											fieldLabel : "银行卡号",
											name : "pf.pfAccount"
										}]
							}, {
								columnWidth : .33,
								labelWidth : 55,
								layout : "form",
								defaults : {
									xtype : "textfield",
									allowBlank : false, // 不允许为空
									anchor : "90%"
								},
								items : [{
											xtype : "numberfield", // 数字框
											fieldLabel : "年龄",
											name : "pf.pfAge"
										}, {
											xtype : "datefield", // 日期框
											fieldLabel : "生日", // label
											format : "Y-m-d",
											name : "pf.pfBirthday",
											readOnly : false, // 只读
											emptyText : "请选择生日" // 为空显示信息
										}, {
											fieldLabel : "开户银行",
											name : "pf.pfBank"
										}, {
											fieldLabel : "电子邮件",
											name : "pf.pfEmail"
										}, {
											xtype : "combo",
											fieldLabel : "政治面貌",
											emptyText : "请选择政治面貌", // 为空显示信息
											hiddenName : "pf.pfParty",
											triggerAction : "all", // 显示所有数据
											displayField : "cfgValue", // 要显示的值
											store : this.comboStoreZhzhmm
										}, {
											fieldLabel : "籍贯",
											name : "pf.pfBirthplace"
										}, {
											fieldLabel : "身份证号",
											name : "pf.pfIdCard"
										}]
							}, {
								columnWidth : .33,
								labelWidth : 55,
								layout : "form",
								defaults : {
									xtype : "textfield",
									allowBlank : false, // 不允许为空
									anchor : "90%"
								},
								items : [{
											fieldLabel : "邮编",
											name : "pf.pfPost"
										}, {
											fieldLabel : "电话",
											name : "pf.pfTelephone"
										}, {
											fieldLabel : "手机号",
											name : "pf.pfMobilephone"
										}, {
											xtype : "combo",
											fieldLabel : "爱好",
											emptyText : "请选择爱好",
											hiddenName : "pf.pfHobby",
											triggerAction : "all", // 显示所有数据
											displayField : "cfgValue", // 要显示的值
											store : this.comboStoreAh
										}, {
											xtype : "combo",
											fieldLabel : "国籍",
											emptyText : "请选择国籍",
											hiddenName : "pf.pfNationality",
											triggerAction : "all", // 显示所有数据
											displayField : "cfgValue", // 要显示的值
											store : this.comboStoreGj
										}, {
											xtype : "combo",
											fieldLabel : "学历",
											emptyText : "请选择学历",
											hiddenName : "pf.pfEducatedDegree",
											triggerAction : "all", // 显示所有数据
											displayField : "cfgValue", // 要显示的值
											store : this.comboStoreXl
										}, {
											fieldLabel : "专业",
											name : "pf.pfEducatedMajor"
										}]
							}]
				}, {
					layout : "form",
					border : false,
					labelWidth : 55,
					items : [{
								frame : true,
								allowBlank : false, // 不允许为空
								xtype : "textfield",
								name : "pf.pfAddress",
								fieldLabel : "地址",
								anchor : "95%"
							}]
				}, {
					layout : "column",
					border : false,
					items : [{
								layout : "form",
								columnWidth : .3,
								labelWidth : 55,
								border : false,
								defaults : {
									allowBlank : false, // 不允许为空
									xtype : "textfield"
								},
								items : [{
											fieldLabel : "照片",
											inputType : "image",
											allowBlank : true,
											width : 130,
											name : "personfile-photo",
											height : 170,
											autoCreate : {
												tag : "input",
												type : "image",
												src : "personImages/default_person.gif"
											}
										}, {
											xtype : "button",
											text : "上传照片",
											style : "margin-left:65px;",
											handler : this.onMyUpLoadClick,
											scope : this
										}]
							}, {
								layout : "form",
								columnWidth : .7,
								labelWidth : 70,
								defaults : {
									xtype : "textfield",
									allowBlank : false, // 不允许为空
									anchor : "90%"
								},
								items : [{
											xtype : "combo",
											fieldLabel : "公司名称",
											emptyText : "请选择公司",
											readOnly : this.myReadOnly, // 自定义属性(是否只读)
											disabled : this.myDisabled, // 自定义属性(是否禁用)
											hiddenName : "pf.pfCompany",
											triggerAction : "all", // 显示所有数据
											displayField : "cfgValue", // 要显示的值
											store : this.comboStoreGs
										}, {
											xtype : "combo",
											fieldLabel : "部门名称",
											hiddenName : "pf.pfBranch",
											readOnly : this.myReadOnly, // 自定义属性(是否只读)
											disabled : this.myDisabled, // 自定义属性(是否禁用)
											emptyText : "请选择部门",
											triggerAction : "all", // 显示所有数据
											displayField : "cfgValue", // 要显示的值
											store : this.comboStoreBm
										}, {
											xtype : "combo",
											fieldLabel : "职位名称",
											emptyText : "请选择职位",
											readOnly : this.myReadOnly, // 自定义属性(是否只读)
											disabled : this.myDisabled, // 自定义属性(是否禁用)
											hiddenName : "pf.pfJob",
											triggerAction : "all", // 显示所有数据
											displayField : "cfgValue", // 要显示的值
											store : this.comboStoreJob
										}, {
											xtype : "combo",
											fieldLabel : "薪酬标准名",
											readOnly : true,
											hiddenName : "pf.miStandardName",
											emptyText : "请选择薪酬标准名",
											triggerAction : "all", // 显示所有数据
											displayField : "miStandardName", // 要显示的值
											store : this.comboStoreMoneyStandard,
											listeners : {
												"select" : this.onMiStandardSelect,
												scope : this
											}
										}, {
											fieldLabel : "薪酬标准号",
											name : "pf.miMoneyStandardId",
											readOnly : true
										}, {
											fieldLabel : "薪酬标准额",
											name : "pf.miCountMoney",
											xtype : "numberfield",
											readOnly : true
										}, {
											xtype : "hidden",
											name : "pf.pfImage",
											value : ""
										}]
							}]
				}]
			}]
		});

		/**
		 * 监听upLoadFileWin的onUploadSuccess事件(图片上传成功事件)
		 */
		this.upLoadFileWin.on("onUploadSuccess", this.onUploadSuccess, this);
	},

	/**
	 * upLoadFileWin的onUploadSuccess事件(图片上传成功事件)
	 * 
	 * @param {}
	 *            _form
	 * @param {}
	 *            _action
	 */
	onUploadSuccess : function(_form, _action) {
		// 获取服务器随机生成的图片的名称
		var _randomPhotoName = _action.result["randomName"];
		// 获取服务器随机生成的图片的路径
		var _randomPhotoUrl = "personImages/" + _action.result["randomName"];
		// 提示信息
		Ext.Msg.alert("系统消息", _action.result.tipMsg);
		// 修改图片路径
		this.findByType("textfield")[13].getEl().dom.src = _randomPhotoUrl;
		// 获取隐藏表单域的引用
		var _hidden = this.findByType("hidden")[0];
		// 设置hidden的数值
		_hidden.setValue(_randomPhotoName);
		// 隐藏窗体
		this.upLoadFileWin.hide();
	},

	/**
	 * 上传图片按钮单击事件
	 */
	onMyUpLoadClick : function() {
		this.upLoadFileWin.show();
	},

	/**
	 * 薪酬标准下拉列表选择事件
	 * 
	 * @param {}
	 *            _combo
	 * @param {}
	 *            _r
	 * @param {}
	 *            _index
	 */
	onMiStandardSelect : function(_combo, _r, _index) {
		// 获取所有的类型为textfield组件的集合
		var _txtItems = this.findByType("textfield");
		// 获取所有的类型为numberfield组件的集合
		var _numItems = this.findByType("numberfield");
		// 获取薪酬标准号textfield的引用
		var _snTxt = _txtItems[_txtItems.length - 1];
		// 获取薪酬标准金额numberfield的引用
		var _svTxt = _numItems[_numItems.length - 1];

		_snTxt.setValue(_r.get("miStandardId"));
		_svTxt.setValue(_r.get("miCountMoney"));
	}
});
